from typing import Any, Dict, Optional

WORDING : Dict[str, Any] =\
{
	'conda_not_activated': 'Conda未激活',
	'python_not_supported': 'Python版本不支持，请升级至{version}或更高版本',
	'curl_not_installed': '未安装cURL',
	'ffmpeg_not_installed': '未安装FFMpeg',
	'creating_temp': '正在创建临时资源',
	'extracting_frames': '正在提取帧，分辨率{resolution}，每秒{fps}帧',
	'extracting_frames_succeed': '帧提取成功',
	'extracting_frames_failed': '帧提取失败',
	'analysing': '分析中',
	'extracting': '提取中',
	'streaming': '流传输中',
	'processing': '处理中',
	'merging': '合并中',
	'downloading': '下载中',
	'temp_frames_not_found': '未找到临时帧',
	'copying_image': '正在复制图像，分辨率{resolution}',
	'copying_image_succeed': '图像复制成功',
	'copying_image_failed': '图像复制失败',
	'finalizing_image': '正在完成图像，分辨率{resolution}',
	'finalizing_image_succeed': '图像完成成功',
	'finalizing_image_skipped': '图像完成已跳过',
	'merging_video': '正在合并视频，分辨率{resolution}，每秒{fps}帧',
	'merging_video_succeed': '视频合并成功',
	'merging_video_failed': '视频合并失败',
	'skipping_audio': '跳过音频',
	'replacing_audio_succeed': '音频替换成功',
	'replacing_audio_skipped': '音频替换已跳过',
	'restoring_audio_succeed': '音频恢复成功',
	'restoring_audio_skipped': '音频恢复已跳过',
	'clearing_temp': '正在清除临时资源',
	'processing_stopped': '处理已停止',
	'processing_image_succeed': '图像处理成功，耗时{seconds}秒',
	'processing_image_failed': '图像处理失败',
	'processing_video_succeed': '视频处理成功，耗时{seconds}秒',
	'processing_video_failed': '视频处理失败',
	'choose_image_source': '选择源图像',
	'choose_audio_source': '选择源音频',
	'choose_video_target': '选择目标视频',
	'choose_image_or_video_target': '选择目标图像或视频',
	'specify_image_or_video_output': '指定输出目录中的图像或视频',
	'match_target_and_output_extension': '目标与输出扩展名需匹配',
	'no_source_face_detected': '未检测到源人脸',
	'processor_not_loaded': '处理器{processor}无法加载',
	'processor_not_implemented': '处理器{processor}未正确实现',
	'ui_layout_not_loaded': 'UI布局{ui_layout}无法加载',
	'ui_layout_not_implemented': 'UI布局{ui_layout}未正确实现',
	'stream_not_loaded': '流模式{stream_mode}无法加载',
	'stream_not_supported': '不支持流模式',
	'job_created': '作业{job_id}已创建',
	'job_not_created': '作业{job_id}未创建',
	'job_submitted': '作业{job_id}已提交',
	'job_not_submitted': '作业{job_id}未提交',
	'job_all_submitted': '所有作业已提交',
	'job_all_not_submitted': '所有作业未提交',
	'job_deleted': '作业{job_id}已删除',
	'job_not_deleted': '作业{job_id}未删除',
	'job_all_deleted': '所有作业已删除',
	'job_all_not_deleted': '所有作业未删除',
	'job_step_added': '步骤已添加到作业{job_id}',
	'job_step_not_added': '步骤未添加到作业{job_id}',
	'job_remix_step_added': '步骤{step_index}已从作业{job_id}重新混合',
	'job_remix_step_not_added': '步骤{step_index}未从作业{job_id}重新混合',
	'job_step_inserted': '步骤{step_index}已插入到作业{job_id}',
	'job_step_not_inserted': '步骤{step_index}未插入到作业{job_id}',
	'job_step_removed': '步骤{step_index}已从作业{job_id}移除',
	'job_step_not_removed': '步骤{step_index}未从作业{job_id}移除',
	'running_job': '正在运行队列中的作业{job_id}',
	'running_jobs': '正在运行所有队列中的作业',
	'retrying_job': '正在重试失败的作业{job_id}',
	'retrying_jobs': '正在重试所有失败的作业',
	'processing_job_succeed': '作业{job_id}处理成功',
	'processing_jobs_succeed': '所有作业处理成功',
	'processing_job_failed': '作业{job_id}处理失败',
	'processing_jobs_failed': '所有作业处理失败',
	'processing_step': '正在处理步骤{step_current}/{step_total}',
	'validating_hash_succeed': '哈希验证成功：{hash_file_name}',
	'validating_hash_failed': '哈希验证失败：{hash_file_name}',
	'validating_source_succeed': '源验证成功：{source_file_name}',
	'validating_source_failed': '源验证失败：{source_file_name}',
	'deleting_corrupt_source': '正在删除损坏的源文件：{source_file_name}',
	'time_ago_now': '刚刚',
	'time_ago_minutes': '{minutes}分钟前',
	'time_ago_hours': '{hours}小时{minutes}分钟前',
	'time_ago_days': '{days}天{hours}小时{minutes}分钟前',
	'point': '。',
	'comma': '，',
	'colon': '：',
	'question_mark': '？',
	'exclamation_mark': '！',
	'help':
	{
		# installer
		'install_dependency': '选择要安装的{dependency}变体',
		'skip_conda': '跳过conda环境检查',
		# paths
		'config_path': '选择要覆盖默认值的配置文件',
		'temp_path': '指定临时资源的目录',
		'jobs_path': '指定存储作业的目录',
		'source_paths': '选择图像或音频路径',
		'target_path': '选择图像或视频路径',
		'output_path': '指定目录中的输出图像或视频',
		# patterns
		'source_pattern': '选择图像或音频模式',
		'target_pattern': '选择图像或视频模式',
		'output_pattern': '指定图像或视频模式',
		# face detector
		'face_detector_model': '选择负责检测人脸的模型',
		'face_detector_size': '指定提供给面部检测器的帧大小',
		'face_detector_angles': '指定在检测人脸前旋转帧的角度',
		'face_detector_score': '根据置信度分数过滤检测到的人脸',
		# face landmarker
		'face_landmarker_model': '选择负责检测面部标志点的模型',
		'face_landmarker_score': '根据置信度分数过滤检测到的面部标志点',
		# face selector
		'face_selector_mode': '使用基于参考的跟踪或简单匹配',
		'face_selector_order': '指定检测到的人脸顺序',
		'face_selector_age_start': '根据起始年龄过滤检测到的人脸',
		'face_selector_age_end': '根据结束年龄过滤检测到的人脸',
		'face_selector_gender': '根据性别过滤检测到的人脸',
		'face_selector_race': '根据种族过滤检测到的人脸',
		'reference_face_position': '指定用于创建参考人脸的位置',
		'reference_face_distance': '指定参考人脸与目标人脸的相似度',
		'reference_frame_number': '指定用于创建参考人脸的帧',
		# face masker
		'face_occluder_model': '选择负责遮挡掩模的模型',
		'face_parser_model': '选择负责区域掩模的模型',
		'face_mask_types': '混合搭配不同的面部掩模类型(选项：{choices})',
		'face_mask_areas': '选择用于区域掩模的项目(选项：{choices})',
		'face_mask_regions': '选择用于区域掩模的项目(选项：{choices})',
		'face_mask_blur': '指定应用于框掩模的模糊程度',
		'face_mask_padding': '对框掩模应用上、右、下、左填充',
		# frame extraction
		'trim_frame_start': '指定目标视频的起始帧',
		'trim_frame_end': '指定目标视频的结束帧',
		'temp_frame_format': '指定临时资源格式',
		'keep_temp': '处理后保留临时资源',
		# output creation
		'output_image_quality': '指定图像质量(影响压缩程度)',
		'output_image_resolution': '根据目标图像指定图像分辨率',
		'output_audio_encoder': '指定音频编码器',
		'output_audio_quality': '指定音频质量(影响压缩程度)',
		'output_audio_volume': '根据目标视频指定音频音量',
		'output_video_encoder': '指定视频编码器',
		'output_video_preset': '平衡视频处理速度和文件大小',
		'output_video_quality': '指定视频质量(影响压缩程度)',
		'output_video_resolution': '根据目标视频指定视频分辨率',
		'output_video_fps': '根据目标视频指定视频帧率',
		# processors
		'processors': '加载单个或多个处理器(选项：{choices}, ...)',
		'age_modifier_model': '选择负责人脸年龄修改的模型',
		'age_modifier_direction': '指定年龄修改的方向',
		'deep_swapper_model': '选择负责人脸交换的模型',
		'deep_swapper_morph': '在源人脸和目标人脸之间变形',
		'expression_restorer_model': '选择负责表情恢复的模型',
		'expression_restorer_factor': '从目标人脸恢复表情的因子',
		'face_debugger_items': '加载单个或多个处理器(选项：{choices})',
		'face_editor_model': '选择负责人脸编辑的模型',
		'face_editor_eyebrow_direction': '指定眉毛方向',
		'face_editor_eye_gaze_horizontal': '指定眼睛水平注视方向',
		'face_editor_eye_gaze_vertical': '指定眼睛垂直注视方向',
		'face_editor_eye_open_ratio': '指定眼睛睁开比例',
		'face_editor_lip_open_ratio': '指定嘴唇张开比例',
		'face_editor_mouth_grim': '指定嘴巴扭曲程度',
		'face_editor_mouth_pout': '指定嘴巴撅起程度',
		'face_editor_mouth_purse': '指定嘴巴收缩程度',
		'face_editor_mouth_smile': '指定微笑程度',
		'face_editor_mouth_position_horizontal': '指定嘴巴水平位置',
		'face_editor_mouth_position_vertical': '指定嘴巴垂直位置',
		'face_editor_head_pitch': '指定头部俯仰角度',
		'face_editor_head_yaw': '指定头部偏航角度',
		'face_editor_head_roll': '指定头部滚动角度',
		'face_enhancer_model': '选择负责人脸增强的模型',
		'face_enhancer_blend': '将增强结果混合到之前的人脸',
		'face_enhancer_weight': '指定应用于人脸的权重程度',
		'face_swapper_model': '选择负责人脸交换的模型',
		'face_swapper_pixel_boost': '为人脸交换器选择像素提升分辨率',
		'frame_colorizer_model': '选择负责帧着色的模型',
		'frame_colorizer_size': '指定提供给帧着色器的帧大小',
		'frame_colorizer_blend': '将着色结果混合到之前的帧',
		'frame_enhancer_model': '选择负责帧增强的模型',
		'frame_enhancer_blend': '将增强结果混合到之前的帧',
		'lip_syncer_model': '选择负责唇形同步的模型',
		'lip_syncer_weight': '指定应用于嘴唇的权重程度',
		# uis
		'open_browser': '程序就绪后打开浏览器',
		'ui_layouts': '启动单个或多个UI布局(选项：{choices}, ...)',
		'ui_workflow': '选择UI工作流程',
		# download
		'download_providers': '使用不同提供商下载(选项：{choices}, ...)',
		'download_scope': '指定下载范围',
		# benchmark
		'benchmark_resolutions': '选择基准测试的分辨率(选项：{choices}, ...)',
		'benchmark_cycle_count': '指定每个基准测试的循环次数',
		# execution
		'execution_device_id': '指定用于处理的设备',
		'execution_providers': '使用不同提供商进行推理(选项：{choices}, ...)',
		'execution_thread_count': '指定处理时的并行线程数',
		'execution_queue_count': '指定每个线程处理的帧数',
		# memory
		'video_memory_strategy': '平衡快速处理和低VRAM使用',
		'system_memory_limit': '限制处理时可用的RAM',
		# misc
		'log_level': '调整终端中显示的消息严重程度',
		'halt_on_error': '发生错误时停止程序',
		# run
		'run': '运行程序',
		'headless_run': '以无头模式运行程序',
		'batch_run': '以批处理模式运行程序',
		'force_download': '强制自动下载并退出',
		'benchmark': '对程序进行基准测试',
		# jobs
		'job_id': '指定作业ID',
		'job_status': '指定作业状态',
		'step_index': '指定步骤索引',
		# job manager
		'job_list': '按状态列出作业',
		'job_create': '创建草稿作业',
		'job_submit': '提交草稿作业成为队列作业',
		'job_submit_all': '提交所有草稿作业成为队列作业',
		'job_delete': '删除草稿、队列、失败或完成的作业',
		'job_delete_all': '删除所有草稿、队列、失败和完成的作业',
		'job_add_step': '向草稿作业添加步骤',
		'job_remix_step': '从草稿作业重新混合步骤',
		'job_insert_step': '向草稿作业插入步骤',
		'job_remove_step': '从草稿作业移除步骤',
		# job runner
		'job_run': '运行队列中的作业',
		'job_run_all': '运行所有队列中的作业',
		'job_retry': '重试失败的作业',
		'job_retry_all': '重试所有失败的作业'
	},
	'about':
	{
		'become_a_member': '成为会员',
		'join_our_community': '加入我们的社区',
		'read_the_documentation': '阅读文档'
	},
	'uis':
	{
		'age_modifier_direction_slider': '年龄修改方向',
		'age_modifier_model_dropdown': '年龄修改模型',
		'apply_button': '应用',
		'benchmark_cycle_count_slider': '基准测试循环次数',
		'benchmark_resolutions_checkbox_group': '基准测试分辨率',
		'clear_button': '清除',
		'common_options_checkbox_group': '选项',
		'download_providers_checkbox_group': '下载提供商',
		'deep_swapper_model_dropdown': '深度交换模型',
		'deep_swapper_morph_slider': '深度交换变形',
		'execution_providers_checkbox_group': '执行提供商',
		'execution_queue_count_slider': '执行队列计数',
		'execution_thread_count_slider': '执行线程计数',
		'expression_restorer_factor_slider': '表情恢复因子',
		'expression_restorer_model_dropdown': '表情恢复模型',
		'face_debugger_items_checkbox_group': '人脸调试项目',
		'face_detector_angles_checkbox_group': '人脸检测角度',
		'face_detector_model_dropdown': '人脸检测模型',
		'face_detector_score_slider': '人脸检测分数',
		'face_detector_size_dropdown': '人脸检测尺寸',
		'face_editor_eyebrow_direction_slider': '人脸编辑-眉毛方向',
		'face_editor_eye_gaze_horizontal_slider': '人脸编辑-眼睛水平注视',
		'face_editor_eye_gaze_vertical_slider': '人脸编辑-眼睛垂直注视',
		'face_editor_eye_open_ratio_slider': '人脸编辑-眼睛睁开比例',
		'face_editor_head_pitch_slider': '人脸编辑-头部俯仰',
		'face_editor_head_roll_slider': '人脸编辑-头部滚动',
		'face_editor_head_yaw_slider': '人脸编辑-头部偏航',
		'face_editor_lip_open_ratio_slider': '人脸编辑-嘴唇张开比例',
		'face_editor_model_dropdown': '人脸编辑模型',
		'face_editor_mouth_grim_slider': '人脸编辑-嘴巴扭曲',
		'face_editor_mouth_position_horizontal_slider': '人脸编辑-嘴巴水平位置',
		'face_editor_mouth_position_vertical_slider': '人脸编辑-嘴巴垂直位置',
		'face_editor_mouth_pout_slider': '人脸编辑-嘴巴撅起',
		'face_editor_mouth_purse_slider': '人脸编辑-嘴巴收缩',
		'face_editor_mouth_smile_slider': '人脸编辑-微笑',
		'face_enhancer_blend_slider': '人脸增强混合',
		'face_enhancer_model_dropdown': '人脸增强模型',
		'face_enhancer_weight_slider': '人脸增强权重',
		'face_landmarker_model_dropdown': '人脸标志点模型',
		'face_landmarker_score_slider': '人脸标志点分数',
		'face_mask_blur_slider': '人脸掩模模糊',
		'face_mask_padding_bottom_slider': '人脸掩模底部填充',
		'face_mask_padding_left_slider': '人脸掩模左侧填充',
		'face_mask_padding_right_slider': '人脸掩模右侧填充',
		'face_mask_padding_top_slider': '人脸掩模顶部填充',
		'face_mask_areas_checkbox_group': '人脸掩模区域',
		'face_mask_regions_checkbox_group': '人脸掩模区域',
		'face_mask_types_checkbox_group': '人脸掩模类型',
		'face_selector_age_range_slider': '人脸选择-年龄范围',
		'face_selector_gender_dropdown': '人脸选择-性别',
		'face_selector_mode_dropdown': '人脸选择模式',
		'face_selector_order_dropdown': '人脸选择顺序',
		'face_selector_race_dropdown': '人脸选择-种族',
		'face_swapper_model_dropdown': '人脸交换模型',
		'face_swapper_pixel_boost_dropdown': '人脸交换像素提升',
		'face_occluder_model_dropdown': '人脸遮挡模型',
		'face_parser_model_dropdown': '人脸解析模型',
		'frame_colorizer_blend_slider': '帧着色混合',
		'frame_colorizer_model_dropdown': '帧着色模型',
		'frame_colorizer_size_dropdown': '帧着色尺寸',
		'frame_enhancer_blend_slider': '帧增强混合',
		'frame_enhancer_model_dropdown': '帧增强模型',
		'job_list_status_checkbox_group': '作业状态',
		'job_manager_job_action_dropdown': '作业操作',
		'job_manager_job_id_dropdown': '作业ID',
		'job_manager_step_index_dropdown': '步骤索引',
		'job_runner_job_action_dropdown': '作业操作',
		'job_runner_job_id_dropdown': '作业ID',
		'lip_syncer_model_dropdown': '唇形同步模型',
		'lip_syncer_weight_slider': '唇形同步权重',
		'log_level_dropdown': '日志级别',
		'output_audio_encoder_dropdown': '输出音频编码器',
		'output_audio_quality_slider': '输出音频质量',
		'output_audio_volume_slider': '输出音频音量',
		'output_image_or_video': '输出',
		'output_image_quality_slider': '输出图像质量',
		'output_image_resolution_dropdown': '输出图像分辨率',
		'output_path_textbox': '输出路径',
		'output_video_encoder_dropdown': '输出视频编码器',
		'output_video_fps_slider': '输出视频帧率',
		'output_video_preset_dropdown': '输出视频预设',
		'output_video_quality_slider': '输出视频质量',
		'output_video_resolution_dropdown': '输出视频分辨率',
		'preview_frame_slider': '预览帧',
		'preview_image': '预览',
		'processors_checkbox_group': '处理器',
		'reference_face_distance_slider': '参考人脸距离',
		'reference_face_gallery': '参考人脸',
		'refresh_button': '刷新',
		'source_file': '源文件',
		'start_button': '开始',
		'stop_button': '停止',
		'system_memory_limit_slider': '系统内存限制',
		'target_file': '目标文件',
		'temp_frame_format_dropdown': '临时帧格式',
		'terminal_textbox': '终端',
		'trim_frame_slider': '修剪帧',
		'ui_workflow': 'UI工作流程',
		'video_memory_strategy_dropdown': '视频内存策略',
		'webcam_fps_slider': '摄像头帧率',
		'webcam_image': '摄像头',
		'webcam_device_id_dropdown': '摄像头设备ID',
		'webcam_mode_radio': '摄像头模式',
		'webcam_resolution_dropdown': '摄像头分辨率'
	}
}


def get(notation : str) -> Optional[str]:
	current = WORDING

	for fragment in notation.split('.'):
		if fragment in current:
			current = current.get(fragment)
			if isinstance(current, str):
				return current

	return None
